/* 最大子数组

输入是以数字组成的数组，例如 arr = [1, -2, 3, 4, -9, 6].

任务是：找出所有项的和最大的 arr 数组的连续子数组。

写出函数 getMaxSubSum(arr)，用其找出并返回最大和。

例如：
getMaxSubSum([-1, 2, 3, -9]) == 5（高亮项的加和）
getMaxSubSum([2, -1, 2, 3, -9]) == 6
getMaxSubSum([-1, 2, 3, -9, 11]) == 11
getMaxSubSum([-2, -1, 1, 2]) == 3
getMaxSubSum([100, -9, 2, -3, 5]) == 100
getMaxSubSum([1, 2, 3]) == 6（所有项的和）
如果所有项都是负数，那就一个项也不取（子数组是空的），所以返回的是 0：

getMaxSubSum([-1, -2, -3]) = 0
请尝试想出一个快速的解决方案：复杂度可以是 O(n2)，有能力达到 O(n) 则更好 */

const getMaxSubsum = (nums) => {
  let maxSum = 0;
  let sum = 0;

  for (
    let startIndex = 0, arrLength = 1;
    nums.length != startIndex;
    startIndex++
  ) {
    for (
      arrLength = 1;
      nums.length + 1 != startIndex + arrLength;
      arrLength++
    ) {
      //console.log(`startIndex:${startIndex},arrLength:${arrLength}`);

      for (let i = startIndex; startIndex + arrLength != i; i++) {
        sum += nums[i];
      }

      if (maxSum < sum) maxSum = sum;
      sum = 0;
    }
  }

  return maxSum;
};

arr = [1, 2, 3];

console.log(getMaxSubsum(arr));
